! function () {
    'use strict';

    // 主体函数
    function main(str) {
        // 转为引用类型
        var opts = {
            str: str
        };

        // 替换成图片
        cmdPicture(opts);

        // 替换成表情包
        cmdEmoticon(opts);

        // 替换成微信表情
        cmdEmojis(opts);

        // 替换成换行
        cmdEnter(opts);

        //替换成照片
        // cmdimg(opts);


        return opts.str;
    }

    // -------------------------------------------------------------------

    function genarateUid() {
        var s = [];
        var hexDigits = "0123456789abcdef";
        for (var i = 0; i < 36; i++) {
            s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
        }
        s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
        s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
        s[8] = s[13] = s[18] = s[23] = "-";

        var uuid = s.join("");
        return uuid;
    }

    // eg: [图片=xxx]
    // 检测
    // 替换 <img src="xxx" />
    function cmdPicture(opts) {
        var reg = /\[图片=([\s\S]*?)\]/g;
        var str = opts.str;
        if (!reg.test(str)) return;
        // alert(str)
        // 更改区域
        // if (!reg.test(str)) {
        //     console.log(str)
        //     return
        // };
        opts.str = str.replace(reg, function () {
            // alert(str)
            var params = arguments;
            // alert(params)
            // alert(arguments)
            // 提取路径
            var path = params[1];
            // alert(path)
            var uuid = genarateUid();
            // alert(uuid)
            var html = '<img src="' + path + '" data-uuid="' + uuid + '" id="' + uuid + '" onclick="viewLargePic(this)" />';
            // alert(html)
            return html;
            // return uuid;
            // alert(uuid);
            // return params;
            // return params[0];
            // return params[1];
        });
    }

    //eg:[卡片=xxx]、
    //检测
    //替换<img src="xxx">
    // function cmdimg(opts) {
    //     var reg = /\[卡片=([\s\S]*?)\]/g;
    //     var str = opts.str;
    //     if (!reg.test(str)) return;
    //     var arr = [
    //         "title",
    //         "des",
    //         "url",
    //         "thumburl",

    //     ];
    //     opts.str = str.replace(reg, function () {
    //         for (let i = 0, len = arr.length; i < len; i++) {
    //             let name = arr[i];
    //             let html = new RegExp("<" + name + ">" + "(.*?)" + "</" + name + ">");
    //             return html;
    //         }
    //     })
    // }

    // -------------------------------------------------------------------

    // eg: [表情包=xxx]
    // 检测
    // 替换 <img src="xxx" />
    function cmdEmoticon(opts) {
        var reg = /\[表情包=([\s\S]*?)\]/g;
        var str = opts.str;
        if (!reg.test(str)) return;
        opts.str = str.replace(reg, function () {
            var params = arguments;
            // 提取路径
            var path = params[1];
            var html = '<img src="' + path + '" />';
            return html;
        });
    }

    // -------------------------------------------------------------------
    var emoticons = {
        0: '微笑',
        1: '撇嘴',
        2: '色',
        3: '发呆',
        4: '得意',
        5: '流泪',
        6: '害羞',
        7: '闭嘴',
        8: '睡',
        9: '大哭',
        10: '尴尬',
        11: '发怒',
        12: '调皮',
        13: '呲牙',
        14: '惊讶',
        15: '难过',
        16: '酷',
        17: '冷汗',
        18: '抓狂',
        19: '吐',
        20: '偷笑',
        21: '愉快',
        22: '白眼',
        23: '傲慢',
        24: '饥饿',
        25: '困',
        26: '惊恐',
        27: '流汗',
        28: '憨笑',
        29: '悠闲',
        30: '奋斗',
        31: '咒骂',
        32: '疑问',
        33: '嘘',
        34: '晕',
        35: '疯了',
        36: '衰',
        37: '骷髅',
        38: '敲打',
        39: '再见',
        40: '擦汗',
        41: '抠鼻',
        42: '鼓掌',
        43: '糗大了',
        44: '坏笑',
        45: '左哼哼',
        46: '右哼哼',
        47: '哈欠',
        48: '鄙视',
        49: '委屈',
        50: '快哭',
        51: '阴险',
        52: '亲亲',
        53: '吓',
        54: '可怜',
        55: '菜刀',
        56: '西瓜',
        57: '啤酒',
        58: '篮球',
        59: '乒乓',
        60: '咖啡',
        61: '饭',
        62: '猪头',
        63: '玫瑰',
        64: '凋谢',
        65: '嘴唇',
        66: '爱心',
        67: '心碎',
        68: '蛋糕',
        69: '闪电',
        70: '炸弹',
        71: '刀',
        72: '足球',
        73: '瓢虫',
        74: '便便',
        75: '月亮',
        76: '太阳',
        77: '礼物',
        78: '拥抱',
        79: '强',
        80: '弱',
        81: '握手',
        82: '胜利',
        83: '抱拳',
        84: '勾引',
        85: '拳头',
        86: '差劲',
        87: '爱你',
        88: 'No',
        89: 'OK'
    }
    // eg: [微笑]
    // 检测
    // 替换 <img src="xxx" />
    function cmdEmojis(opts) {
        var reg = /\[([\s\S]*?)\]/g;
        var str = opts.str;
        var arr = null;
        while ((arr = reg.exec(str)) !== null) {
            //获取图片对应下标
            for (var i in emoticons) {
                if (emoticons[i] == arr[1]) {
                    str = str.replace('[' + emoticons[i] + ']', '<img src="/plugs/kindeditor/plugins/emoticons/images/' + i + '.gif" class="emoji-reg" />');
                }
            }
        }
        opts.str = str;
    }

    // -------------------------------------------------------------------

    // eg: \n
    // 检测
    // 替换 <br />

    function cmdEnter(opts) {
        var str = opts.str;
        // alert(str)
        str = str.replace(/(\\r\\n)|(\\n)/g, '<br/>')
        str = str.replace(/(\r\n)|(\n)/g, '<br/>')

        // alert(str)
        opts.str = str;
    }

    window.formatChat = main;
}();